package rs.ac.mbs2.entiteti;

import java.io.Serializable;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.OneToOne;
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Vozilo implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy = GenerationType.TABLE)
	@Column(name = "id", nullable = false)
	private int id;
	
	@Column(name = "mestaZaSedenje", nullable = false)
	private int  mestaZaSedenje;
	@Column(name = "oznaka", nullable = false)
	private int oznaka;
	@Column(name = "registarskiBroj", nullable = false)
	private String registarskiBroj;
	@Column(name = "marka", nullable = false)
	private String marka;
	@Column(name = "tip", nullable = false)
	private String tip;
	@Column(name = "boja", nullable = false)
	private String boja;
	@Column(name = "zapreminaPrtljaznika", nullable = false)
	private float zapreminaPrtljaznika;
	@Column(name = "nosivostPrtljaznika", nullable = false)
	private float nosivostPrtljaznika;
	@Embedded
	@AttributeOverrides({ @AttributeOverride(name = "naziv", column = @Column(name = "vo_kategorija", columnDefinition = "ENUM('A', 'B', 'C', 'D', 'E')", nullable = false)) })
	private Kategoija kategorija;
	@OneToOne(mappedBy = "vozilo", optional = true)
	private Vozac vozac;

	
	
	//get set
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getMestaZaSedenje() {
		return mestaZaSedenje;
	}
	public void setMestaZaSedenje(int mestaZaSedenje) {
		this.mestaZaSedenje = mestaZaSedenje;
	}
	public Vozac getVozac() {
		return vozac;
	}
	public void setVozac(Vozac vozac) {
		this.vozac = vozac;
	}
	public int getOznaka() {
		return oznaka;
	}
	public void setOznaka(int oznaka) {
		this.oznaka = oznaka;
	}
	public String getRegistarskiBroj() {
		return registarskiBroj;
	}
	public void setRegistarskiBroj(String registarskiBroj) {
		this.registarskiBroj = registarskiBroj;
	}
	public String getMarka() {
		return marka;
	}
	public void setMarka(String marka) {
		this.marka = marka;
	}
	public String getTip() {
		return tip;
	}
	public void setTip(String tip) {
		this.tip = tip;
	}
	public String getBoja() {
		return boja;
	}
	public void setBoja(String boja) {
		this.boja = boja;
	}
	public float getZapreminaPrtljaznika() {
		return zapreminaPrtljaznika;
	}
	public void setZapreminaPrtljaznika(float zapreminaPrtljaznika) {
		this.zapreminaPrtljaznika = zapreminaPrtljaznika;
	}
	public float getNosivostPrtljaznika() {
		return nosivostPrtljaznika;
	}
	public void setNosivostPrtljaznika(float nosivostPrtljaznika) {
		this.nosivostPrtljaznika = nosivostPrtljaznika;
	}
	public Kategoija getKategorija() {
		return kategorija;
	}
	public void setKategorija(Kategoija kategorija) {
		this.kategorija = kategorija;
	}
	
	@Override
	public String toString() {
		return "Vozilo [id=" + id + ", mestaZaSedenje=" + mestaZaSedenje
				+ ", oznaka=" + oznaka + ", registarskiBroj=" + registarskiBroj
				+ ", marka=" + marka + ", tip=" + tip + ", boja=" + boja
				+ ", zapreminaPrtljaznika=" + zapreminaPrtljaznika
				+ ", nosivostPrtljaznika=" + nosivostPrtljaznika
				+ ", kategorija=" + kategorija + "]";
	}
}

